home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Your Apple Games Gallery 1
/
Your Apple Games Gallery (Side B)(MicroSPARC, Inc.)(1988).do
/
BRIDGE.BIDDER.bas
< prev
next >
Wrap
BASIC Source File
|
2021-12-11
|
26KB
|
793 lines
2 REM * BRIDGE.BIDDER 8.6.84 *
3 REM * BY DALE SEDIVEC *
4 REM * COPYRIGHT (C) 1984 *
5 REM * BY MICROSPARC, INC. *
6 REM * CONCORD, MA 01742 *
10 REM MAIN LOGIC SECTION
20 LOMEM: 25400
30 D$ = CHR$(4)
40 PRINT D$;"BLOAD CARDS"
50 PRINT D$;"BLOAD SUITS"
60 GOSUB 550
70 GOSUB 680
80 GOSUB 2350
90 GOSUB 7670: GOSUB 1600: GOSUB 1780
100 IF (NB +SB) <1 OR RS > = (NB +SB) THEN GOSUB 7090: GOTO 120
110 GOSUB 3620
120 GOSUB 7150
130 GOTO 70: REM MAIN LOGIC SECTION ENDS HERE
140 GOSUB 4420
150 IF QE <QN THEN W = 2:HC = O
160 RETURN
170 GOSUB 4190
180 IF QW <QS THEN W = 4:HC = O
190 RETURN
200 HCOLOR= 1: GET AX$
210 X = 90:Y = 81:O = 1: GOSUB 1920
220 X = 130:Y = 59:O = 1: GOSUB 1920
230 X = 170:Y = 81:O = 1: GOSUB 1920
240 X = 130:Y = 105:O = 1: GOSUB 1920
250 RETURN
260 HCOLOR= 3: GOSUB 1920
270 HCOLOR= 6: DRAW 15 AT X +2,Y +4
280 HCOLOR= O: HPLOT X -1,Y TO X +16,Y TO X +16,Y +24 TO X -1,Y +24 TO X -1,Y
290 RETURN
300 FOR X7 = 13 TO 1 STEP -1
310 IF (TP = 1 AND S(X7,PT) >0) OR (TP = 0 AND N(X7,PT) >0) THEN Y7 = 1: RETURN
320 NEXT
330 RETURN
340 Q = QW:R = RW:X = 90:Y = 81: GOSUB 1830: RETURN
350 Q = QE:R = RE:X = 170:Y = 81: GOSUB 1830: RETURN
360 X = 12
370 IF RN = 1 OR RN = 3 THEN Y = 25
380 IF RN = 2 OR RN = 4 THEN Y = 12
390 FOR Y7 = 4 TO 1 STEP -1
400 FOR X7 = 13 TO 1 STEP -1
410 IF X7 = Q AND Y7 = R THEN HCOLOR= 1:O = 1: GOSUB 1920: RETURN
420 IF N(X7,Y7) >O OR N(X7,Y7) = -1 THEN X = X +20
430 NEXT
440 NEXT
450 CW = O:CS = O:CN = O:CE = O:HC = O: RETURN
460 X = 12
470 IF RS = 1 OR RS = 3 THEN Y = 153
480 IF RS = 2 OR RS = 4 THEN Y = 140
490 FOR Y7 = 4 TO 1 STEP -1
500 FOR X7 = 13 TO 1 STEP -1
510 IF X7 = Q AND Y7 = R THEN HCOLOR= 1:O = 1: GOSUB 1920: RETURN
520 IF S(X7,Y7) >O OR S(X7,Y7) = -1 THEN X = X +20
530 NEXT
540 NEXT
550 O = 0: REM INITIALIZE DIM'S
560 SCALE= 1: ROT= 0
570 DIM N(13,4): DIM S(13,4): DIM E(13,4): DIM W(13,4)
580 UB = O:OB = O: DIM G(1,2)
590 MS = 0:DN = 1
600 GOSUB 620
610 RETURN
620 FOR X = 0 TO 1
630 FOR Y = 0 TO 2
640 G(X,Y) = O
650 NEXT
660 NEXT
670 RETURN
680 FOR Q = 1 TO 13: REM INITIALIZE VARIABLES AND DEAL
690 FOR R = 0 TO 4
700 N(Q,R) = O:S(Q,R) = O:E(Q,R) = O:W(Q,R) = O
710 NEXT
720 NEXT
730 S8 = 1:QE = 100:QW = 100
740 IF MS = 1 THEN 840
750 TEXT : HOME : VTAB 22: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 1
760 PRINT "ENTER MONTH,DAY,YEAR AND WAIT FOR DEAL:"
770 INPUT "MO ? ";M8
780 INPUT "DA ? ";D8
790 INPUT "YR ? ";T8
800 IF T8 <(M8 +D8) THEN 760
810 HGR2 : GOSUB 1060
820 T8 = T8 -D8 -M8
830 IF T8 <1 THEN 760
840 FOR M8 = 1 TO T8
850 D8 = RND(1)
860 NEXT
870 POKE -16304,0: POKE -16297,0: POKE -16299,0: GOSUB 3560
880 FOR T8 = 1 TO 52
890 R = INT(4 * RND(1) +1)
900 Q = INT(13 * RND(1) +1)
910 IF (N(Q,R) +S(Q,R) +E(Q,R) +W(Q,R)) >0 THEN 890
920 IF S8 = 1 THEN W(Q,R) = Q:S8 = 2:X = INT(74 * RND(1) +1):Y = INT(37 * RND(1) +60): GOSUB 260: GOTO 960
930 IF S8 = 2 THEN N(Q,R) = Q:S8 = 3:X = INT(74 * RND(1) +90):Y = INT(37 * RND(1)): GOSUB 260: GOTO 960
940 IF S8 = 3 THEN E(Q,R) = Q:S8 = 4:X = INT(74 * RND(1) +180):Y = INT(37 * RND(1) +60): GOSUB 260: GOTO 960
950 S(Q,R) = Q:S8 = 1:X = INT(74 * RND(1) +90):Y = INT(37 * RND(1) +120): GOSUB 260
960 NEXT
970 MS = 1
980 ZZ = O:ST$ = "O":NB = -1:SB = -1:NT = O:TN = O:NP = O:SP = O
990 DN = DN +1:BC = 1
1000 IF DN = 3 THEN DN = 1
1010 T2 = O
1020 X8 = 221:Y8 = 51
1030 BN = 1:PT = O
1040 GOSUB 450
1050 RETURN
1060 HCOLOR= 1: REM BACKGROUND COLOR
1070 FOR Y = 0 TO 191
1080 HPLOT 0,Y TO 279,Y
1090 NEXT
1100 RETURN
1110 HCOLOR= 3
1120 HPLOT X +2,Y TO X +15,Y
1130 HPLOT X +2,Y +23 TO X +15,Y +23
1140 RETURN
1150 X = X8:Y = Y8
1160 IF X8 = 221 AND Y8 = 51 THEN GOSUB 260:X8 = X8 +8:Y8 = Y8 +12: RETURN
1170 IF T2 = 7 THEN X8 = 191:Y8 = 55
1180 X = X8:Y = Y8: GOSUB 260
1190 X8 = X8 +8:Y8 = Y8 +12
1200 RETURN
1210 GOSUB 1430
1220 FOR QW = 1 TO 13
1230 IF W(QW,RW) >S(QS,RS) AND QW >QN THEN CW = 1:W = 1: RETURN
1240 NEXT
1250 GOSUB 5350
1260 IF CW = 1 THEN W = 1: RETURN
1270 GOSUB 4190
1280 IF CW = 1 THEN RETURN
1290 RW = T: GOSUB 4190
1300 IF CW = 1 THEN W = 1: RETURN
1310 GOSUB 4130: RETURN
1320 GOSUB 1470
1330 FOR QE = 1 TO 13
1340 IF E(QE,RE) >N(QN,RN) AND QE >QS THEN CE = 1:W = 3: RETURN
1350 NEXT
1360 GOSUB 4830
1370 IF CE = 1 THEN W = 3: RETURN
1380 GOSUB 4420
1390 IF CE = 1 THEN RETURN
1400 RE = T: GOSUB 4420
1410 IF CE = 1 THEN W = 3: RETURN
1420 GOSUB 4460: RETURN
1430 FOR QN = 13 TO 1 STEP -1
1440 IF N(QN,RN) >0 THEN RETURN
1450 NEXT
1460 QN = 0: RETURN
1470 FOR QS = 13 TO 1 STEP -1
1480 IF S(QS,RS) >0 THEN RETURN
1490 NEXT
1500 QS = 0: RETURN
1510 X = 12
1520 FOR R = 4 TO 1 STEP -1
1530 IF R = 4 OR R = 2 THEN Y = 140
1540 IF R = 3 OR R = 1 THEN Y = 153
1550 FOR Q = 13 TO 1 STEP -1
1560 IF S(Q,R) >O THEN O = 1: GOSUB 1830
1570 NEXT
1580 NEXT
1590 RETURN
1600 X = 12
1610 FOR R = 4 TO 1 STEP -1
1620 IF R = 4 OR R = 2 THEN Y = 12
1630 IF R = 3 OR R = 1 THEN Y = 25
1640 FOR Q = 13 TO 1 STEP -1
1650 IF N(Q,R) >O THEN O = 1: GOSUB 1830
1660 NEXT
1670 NEXT
1680 RETURN
1690 PRINT
1700 Q = Q -1
1710 IF Q = O THEN Q = 14
1720 GOSUB 1830
1730 RETURN
1740 BC = BC +1
1750 BN = BN +1
1760 IF BC >2 THEN BC = 1
1770 RETURN
1780 HCOLOR= 1:CH = 0
1790 FOR Y = 59 TO 131
1800 HPLOT 80,Y TO 279,Y
1810 NEXT
1820 HCOLOR= 3:CH = 3: RETURN
1830 REM DRAW CARDS
1840 HCOLOR= 3: GOSUB 1920
1850 HCOLOR= 0
1860 ON Q GOSUB 1960,1980,2000,2020,2040,2060,2080,2100,2120,2140,2160,2180,2200,2220
1870 POKE 232,0: POKE 233,98
1880 ON R GOSUB 2230,2260,2290,2320
1890 HCOLOR= 1: HPLOT X -2,Y +10 TO X -2,Y +20
1900 X = X +20
1910 RETURN
1920 POKE 232,0: POKE 233,96: DRAW 1 AT X,Y
1930 IF O = 1 THEN O = 0: RETURN
1940 AX = PEEK( -16336):AX = PEEK( -16336):AX = PEEK( -16336): REM SOUND OF CARD WHEN PLAYED
1950 RETURN
1960 DRAW 2 AT X +6,Y +3
1970 RETURN
1980 DRAW 3 AT X +6,Y +3
1990 RETURN
2000 DRAW 4 AT X +6,Y +3
2010 RETURN
2020 DRAW 5 AT X +10,Y +3
2030 RETURN
2040 DRAW 6 AT X +6,Y +3
2050 RETURN
2060 DRAW 7 AT X +6,Y +3
2070 RETURN
2080 DRAW 8 AT X +6,Y +5
2090 RETURN
2100 DRAW 9 AT X +9,Y +6
2110 RETURN
2120 DRAW 10 AT X +6,Y +3
2130 RETURN
2140 DRAW 11 AT X +10,Y +3
2150 RETURN
2160 DRAW 12 AT X +8,Y +9
2170 RETURN
2180 DRAW 13 AT X +6,Y +3
2190 RETURN
2200 DRAW 14 AT X +6,Y +9
2210 RETURN
2220 HPLOT X +8,Y +3 TO X +8,Y +9: RETURN
2230 HCOLOR= O
2240 DRAW 7 AT X +4,Y +19
2250 RETURN
2260 HCOLOR= 5
2270 DRAW 4 AT X +2,Y +17
2280 RETURN
2290 HCOLOR= 5
2300 DRAW 5 AT X +2,Y +13
2310 RETURN
2320 HCOLOR= O
2330 DRAW 6 AT X +3,Y +17
2340 RETURN
2350 GOSUB 1060: GOSUB 1510: GOSUB 3430: REM BIDDING SECTION
2360 GOSUB 2470
2370 IF DN = 2 THEN 2420
2380 IF NB = O AND SB >O THEN W = 4: RETURN
2390 IF SB = O AND NB = O THEN RETURN
2400 GOSUB 3200
2410 GOSUB 1740
2420 IF SB = O AND NB >O THEN W = 2: RETURN
2430 IF SB = O AND NB = O THEN RETURN
2440 GOSUB 2670
2450 GOSUB 1740
2460 GOTO 2380
2470 FOR Y = 1 TO 4: REM DETERMINE PTS OF NO AND SO
2480 D8 = O:T8 = O:NT = O
2490 FOR X = 1 TO 13
2500 IF N(X,Y) >O THEN NT = NT +N(X,Y):D8 = D8 +1
2510 IF S(X,Y) >O THEN T8 = T8 +1
2520 NEXT
2530 IF D8 <3 THEN NP = NP +3 -D8
2540 IF T8 <3 THEN SP = SP +3 -T8
2550 IF NT >TN AND D8 >3 THEN TN = NT:TP = Y:PT = Y: GOSUB 6830
2560 NEXT
2570 FOR Y = 1 TO 4
2580 FOR X = 10 TO 13
2590 IF N(X,Y) >O THEN NP = NP +X -9
2600 IF S(X,Y) >O THEN SP = SP +X -9
2610 NEXT
2620 NEXT
2630 FOR Q = 1 TO 7
2640 IF (NP +SP) >(16 +3 *Q) THEN ZZ = Q
2650 NEXT
2660 RETURN
2670 X = QE:Y = 59:TP = PT:QE = QE +20: IF SB >O THEN GOSUB 3130: REM NO'S BID
2680 IF NB = -1 AND SB < = O AND NP >19 AND XX < = 4 THEN Q = 1:TP = 0: GOTO 2920
2690 R5 = O: IF T < >M8 AND T < >(PT) AND SB >O THEN GOSUB 6900
2700 IF R5 = 1 THEN R5 = O: GOTO 2880
2710 IF XX = 7 AND (NP +SP) <20 AND SB <2 AND NB = -1 THEN Q = 3: GOTO 2920
2720 IF XX >6 AND INT(SB) = 1 AND NB = -1 THEN Q = 3: GOTO 2920
2730 IF XX >6 AND SB <7 THEN 2880
2740 IF INT(NB) = 1 AND (ST$ = "N" OR INT(SB) = 3) THEN GOSUB 2940: GOTO 2880
2750 IF (ST$ = "N" AND NB <1) OR ( INT(SB) = 2 AND NB <1 AND NP >5) THEN 2880
2760 IF (SB < = O AND NP <13) OR (SB >O AND NP <6) THEN 2870
2770 IF SB < = O AND NP >19 AND NB = -1 THEN Q = 2: GOTO 2920
2780 IF NB >O AND BN >2 AND BN <5 THEN GOSUB 2940
2790 IF D8 = 1 THEN D8 = O: GOTO 2820
2800 IF NB >O AND BN >2 AND BN <7 THEN GOSUB 3080
2810 IF D8 = 1 THEN D8 = O: GOTO 2820
2820 FOR Q = 1 TO 7
2830 IF TP = O THEN TP = 5
2840 IF (Q +TP/10) >SB AND Q < = ZZ THEN 2920
2850 NEXT
2860 IF TP = 5 THEN TP = O
2870 HCOLOR= 3: GOSUB 1920:NB = O: RETURN
2880 FOR Q = 1 TO 7
2890 IF TP = O THEN TP = 5
2900 IF (Q +TP/10) >SB THEN 2920
2910 NEXT
2920 NB = Q +TP/10: IF TP = 5 THEN TP = O
2930 T = TP:R = TP: GOSUB 1690: RETURN
2940 D8 = O
2950 FOR R = 1 TO 4
2960 FOR Q = 13 TO 12 STEP -1
2970 IF (N(Q,R) >O AND N(Q -1,R) >O) OR (N(Q,R) >O AND N(Q -2,R) >O) AND R < >PT THEN GOSUB 6980
2980 IF D8 = 1 THEN RETURN
2990 NEXT
3000 NEXT
3010 FOR R = 1 TO 4
3020 FOR Q = 13 TO 12 STEP -1
3030 IF N(Q,R) >O AND R < >PT THEN GOSUB 6980
3040 IF D8 = 1 THEN RETURN
3050 NEXT
3060 NEXT
3070 RETURN
3080 D8 = O
3090 IF SB < = O OR T = O OR M8 = O THEN RETURN
3100 IF T8 >Z THEN D8 = 1:TP = M8
3110 IF DE >T8 AND DE >Z THEN D8 = 1:TP = T
3120 RETURN
3130 IF M8 = O OR SB < = O OR T = O THEN RETURN
3140 T8 = O:DE = O
3150 FOR Q = 1 TO 13
3160 T8 = T8 +S(Q,M8) +N(Q,M8)
3170 DE = DE +S(Q,T) +N(Q,T)
3180 NEXT
3190 RETURN
3200 REM SO'S BID
3210 X = QW:Y = 105:QW = QW +20
3220 HCOLOR= O:O = 1: GOSUB 1920: GOSUB 3490
3230 GET Q$
3240 IF Q$ = CHR$(27) THEN GOSUB 3410:Y = 105: GOTO 3230
3250 IF Q$ = "P" THEN SB = O: HCOLOR= 3: GOSUB 1920: RETURN
3260 GET ST$
3270 Q = VAL(Q$)
3280 IF Q <1 THEN CALL -198: GOTO 3230
3290 IF Q >7 OR (ST$ < >"S" AND ST$ < >"H" AND ST$ < >"D" AND ST$ < >"C" AND ST$ < >"N") THEN CALL -198: GOTO 3230
3300 IF ST$ = "C" THEN R = 1:T = 1
3310 IF ST$ = "D" THEN R = 2:T = 2
3320 IF ST$ = "H" THEN R = 3:T = 3
3330 IF ST$ = "S" THEN R = 4:T = 4
3340 IF ST$ = "N" THEN R = O:T = O
3350 IF SB <1 THEN M8 = T
3360 IF T = O THEN T = 5
3370 SB = Q +T/10: IF T = 5 THEN T = O
3380 IF SB < = NB THEN CALL -198: GOTO 3230
3390 GOSUB 1690
3400 RETURN
3410 TEXT : HOME : GOSUB 7670: GOSUB 7480: PRINT : INVERSE : PRINT "PROJECTED BID OF EAST/WEST: " INT(RS);" ";EW$: NORMAL : PRINT : GET AX$
3420 POKE -16304,0: POKE -16297,0: POKE -16299,0: RETURN
3430 REM DRAW NO & SO
3440 HCOLOR= O:O = 1:X = 80:Y = 59: GOSUB 1920
3450 HCOLOR= 3: HPLOT X +2,Y +15 TO X +2,Y +9 TO X +6,Y +15 TO X +6,Y +9: GOSUB 3550
3460 HCOLOR= O:O = 1:Y = 105: GOSUB 1920
3470 HCOLOR= 3: DRAW 5 AT X +6,Y +9: GOSUB 3550
3480 RETURN
3490 REM DRAW BID
3500 HCOLOR= 3: POKE 232,0: POKE 233,98
3510 DRAW 1 AT X +10,Y +3
3520 DRAW 2 AT X +7,Y +9
3530 DRAW 3 AT X +6,Y +17
3540 RETURN
3550 HPLOT X +10,Y +9 TO X +14,Y +9 TO X +14,Y +15 TO X +10,Y +15 TO X +10,Y +9: RETURN
3560 HCOLOR= 1:X = 130:Y = 59: GOSUB 1920:Y = 105: GOSUB 1920
3570 X = 12:Y = 81: GOSUB 1920:X = 32: GOSUB 1920
3580 FOR Y = 145 TO 50 STEP -1
3590 HPLOT 279,Y TO 190,Y
3600 NEXT
3610 RETURN
3620 GOSUB 6790: REM TRICK SECTION
3630 IF PT < >M8 AND W = 2 AND T = M8 THEN W = 4
3640 IF PT < >M8 AND W = 4 AND T = PT THEN W = 2
3650 ON W GOSUB 5120,5560,6280,3810
3660 GOSUB 4930
3670 GOSUB 200
3680 IF W = 2 OR W = 4 THEN T2 = T2 +1: GOSUB 1150
3690 GOSUB 450
3700 ON W GOSUB 3810,5120,5560,6280
3710 GOSUB 4930
3720 FOR Q = 1 TO 13
3730 FOR R = 1 TO 4
3740 IF S(Q,R) >0 THEN 3670
3750 NEXT
3760 NEXT
3770 IF AX$ = "A" THEN RETURN
3780 GOSUB 200
3790 IF W = 2 OR W = 4 THEN T2 = T2 +1: GOSUB 1150
3800 RETURN
3810 W = 1:FL = O: REM WEST LEADS
3820 GOSUB 4020
3830 IF CW = 1 THEN GOSUB 340: GOTO 3910
3840 GOSUB 5770
3850 IF CE = 1 THEN CE = 0:HC = 0:RW = RE: GOSUB 4190
3860 IF CW = 1 THEN GOSUB 340: GOTO 3910
3870 IF FL = O THEN FL = 1: GOSUB 5880: GOTO 3850
3880 GOSUB 4130
3890 IF CW = 1 THEN GOSUB 340: GOTO 3910
3900 RW = T: GOSUB 4190: GOSUB 340
3910 PT = RW:TP = 0: GOSUB 4870: GOSUB 1830: GOSUB 360
3920 GOSUB 5030
3930 IF HC = 1 AND W = 1 THEN GOSUB 4520: GOSUB 350: GOTO 3970
3940 IF W = 1 THEN GOSUB 4580: GOSUB 350: GOTO 3970
3950 IF RN = RW THEN RE = RN:RS = RE: GOSUB 1320: GOSUB 350: GOTO 3970
3960 GOSUB 4760: GOSUB 350
3970 TP = 1: GOSUB 4900: GOSUB 1830: GOSUB 460
3980 IF HC = 1 AND RS < >T THEN RETURN
3990 IF W = 1 THEN GOSUB 4940: RETURN
4000 IF W = 3 THEN GOSUB 4970: RETURN
4010 GOSUB 5000: RETURN
4020 FOR QW = 13 TO 1 STEP -1
4030 FOR RW = 1 TO 4
4040 IF W(QW,RW) >O THEN GOSUB 4090
4050 IF CW = 1 THEN RETURN
4060 NEXT
4070 NEXT
4080 RETURN
4090 FOR QN = QW TO 13
4100 IF N(QN,RW) >O OR S(QN,RW) >O THEN RETURN
4110 NEXT
4120 CW = 1:HC = 1: RETURN
4130 FOR QW = 1 TO 13
4140 FOR RW = 1 TO 4
4150 IF W(QW,RW) >O AND RW < >T THEN CW = 1: RETURN
4160 NEXT
4170 NEXT
4180 RETURN
4190 FOR QW = 1 TO 13
4200 IF W(QW,RW) >O THEN CW = 1: RETURN
4210 NEXT
4220 RETURN
4230 GET Q$: GET R$
4240 Q = VAL(Q$)
4250 IF Q < >0 THEN Q = Q -1
4260 IF Q = O THEN GOSUB 4290
4270 GOSUB 4350: IF Y7 = 1 THEN CALL -198: GOTO 4230
4280 RETURN
4290 IF Q$ = "A" THEN Q = 13
4300 IF Q$ = "K" THEN Q = 12
4310 IF Q$ = "Q" THEN Q = 11
4320 IF Q$ = "J" THEN Q = 10
4330 IF Q$ = "T" THEN Q = 9
4340 RETURN
4350 R = O:Y7 = O
4360 IF R$ = "C" THEN R = 1
4370 IF R$ = "D" THEN R = 2
4380 IF R$ = "H" THEN R = 3
4390 IF R$ = "S" THEN R = 4
4400 IF R < >(PT) AND X7 < >0 THEN GOSUB 300
4410 RETURN
4420 FOR QE = 1 TO 13
4430 IF E(QE,RE) >O THEN CE = 1: RETURN
4440 NEXT
4450 RETURN
4460 FOR QE = 1 TO 13
4470 FOR RE = 4 TO 1 STEP -1
4480 IF E(QE,RE) >O AND RE < >T THEN CE = 1: RETURN
4490 NEXT
4500 NEXT
4510 RETURN
4520 RE = RW: GOSUB 4420
4530 IF CE = 1 AND QE >QW THEN W = 3
4540 IF CE = 1 THEN RETURN
4550 GOSUB 4460
4560 IF CE = 1 THEN RETURN
4570 W = 3:RE = T: GOSUB 4420: RETURN
4580 RE = RW: GOSUB 4610
4590 IF CE = 1 AND QE >QW THEN W = 3
4600 GOSUB 4720: RETURN
4610 FOR QE = 13 TO 1 STEP -1
4620 IF E(QE,RE) >O THEN CE = 1: RETURN
4630 NEXT
4640 RETURN
4650 FOR QE = 13 TO 1 STEP -1
4660 IF E(QE,RE) >N(QN,RN) THEN CE = 1: RETURN
4670 NEXT
4680 RETURN
4690 GOSUB 4650
4700 IF CE = 1 THEN W = 3: RETURN
4710 GOSUB 4420: GOSUB 4720: RETURN
4720 IF CE = 1 THEN RETURN
4730 RE = T: GOSUB 4420
4740 IF CE = 1 THEN W = 3: RETURN
4750 GOSUB 4460: RETURN
4760 RE = RW: GOSUB 4420
4770 IF CE = 1 THEN RETURN
4780 RE = T: GOSUB 4830
4790 IF CE = 1 THEN W = 3: RETURN
4800 GOSUB 4460
4810 IF CE = 1 THEN RETURN
4820 RE = T: GOSUB 4420: RETURN
4830 FOR QE = 1 TO 13
4840 IF E(QE,RE) >N(QN,RN) THEN CE = 1: RETURN
4850 NEXT
4860 RETURN
4870 GOSUB 4230:QN = Q:RN = R:X = 130:Y = 59
4880 IF QN <1 OR QN >13 OR RN <1 OR RN >4 OR N(QN,RN) < = O THEN CALL -198: GOTO 4870
4890 RETURN
4900 GOSUB 4230:QS = Q:RS = R:X = 130:Y = 105
4910 IF QS <1 OR QS >13 OR RS <1 OR RS >4 OR S(QS,RS) < = O THEN CALL -198: GOTO 4900
4920 RETURN
4930 S(QS,RS) = -1:N(QN,RN) = -1:E(QE,RE) = -1:W(QW,RW) = -1: RETURN
4940 IF QS >QW AND RS = RW THEN W = 4:HC = O
4950 IF RS < >RW AND RS = T THEN W = 4:HC = O
4960 RETURN
4970 IF QS >QE AND RS = RE THEN W = 4:HC = O
4980 IF RS < >RE AND RS = T THEN W = 4:HC = O
4990 RETURN
5000 IF QS >QN AND RS = RN THEN W = 4:HC = O
5010 IF RS < >RN AND RS = T THEN W = 4:HC = O
5020 RETURN
5030 IF QN >QW AND RN = RW THEN W = 2:HC = O
5040 IF RN < >RW AND RN = T THEN W = 2:HC = O
5050 RETURN
5060 IF QN >QS AND RN = RS THEN W = 2:HC = O
5070 IF RN < >RS AND RN = T THEN W = 2:HC = O
5080 RETURN
5090 IF QN >QE AND RN = RE THEN W = 2:HC = O
5100 IF RN < >RE AND RN = T THEN W = 2:HC = O
5110 RETURN
5120 X = 130:Y = 59: GOSUB 1110: REM NO LEADS
5130 IF AX$ = "A" THEN GOSUB 7040: RETURN
5140 W = 2:TP = 0:X7 = 0: GOSUB 4870: GOSUB 1830: GOSUB 360:PT = RN
5150 RE = RN: GOSUB 1320
5160 IF RE = RN AND QE = 12 AND S(13,RN) >O AND RND(1) <.5 THEN GOSUB 140
5170 GOSUB 350
5180 TP = 1: GOSUB 4900: GOSUB 1830: GOSUB 460
5190 IF W = 2 THEN GOSUB 5000: GOTO 5210
5200 GOSUB 4970
5210 IF W = 2 THEN GOSUB 5270: GOSUB 340: RETURN
5220 IF W = 4 AND RS < >T THEN GOSUB 5330: GOSUB 340: RETURN
5230 IF W = 4 AND RS = RN AND RS = T THEN GOSUB 5330: GOSUB 340: RETURN
5240 IF W = 4 THEN GOSUB 6570: GOSUB 340: RETURN
5250 IF RE = RN THEN GOSUB 6040: GOSUB 340: RETURN
5260 GOSUB 6640: GOSUB 340: RETURN
5270 RW = RN: GOSUB 5290
5280 GOSUB 5390: RETURN
5290 FOR QW = 1 TO 13
5300 IF W(QW,RW) >N(QN,RN) THEN CW = 1: RETURN
5310 NEXT
5320 RETURN
5330 RW = RS: GOSUB 5350
5340 GOSUB 5390: RETURN
5350 FOR QW = 1 TO 13
5360 IF W(QW,RW) >S(QS,RS) THEN CW = 1: RETURN
5370 NEXT
5380 RETURN
5390 IF CW = 1 THEN W = 1: RETURN
5400 GOSUB 4190: GOSUB 5410: RETURN
5410 IF CW = 1 THEN RETURN
5420 RW = T: GOSUB 4190
5430 IF CW = 1 THEN W = 1: RETURN
5440 GOSUB 4130: RETURN
5450 RW = RE: GOSUB 4190
5460 IF CW = 1 AND QW <QE THEN RETURN
5470 IF CW = 1 THEN W = 1: RETURN
5480 GOSUB 4130
5490 IF CW = 1 THEN RETURN
5500 RW = T:W = 1: GOSUB 4190: RETURN
5510 LET RE = T: GOSUB 4830
5520 IF CE = 1 THEN W = 3: RETURN
5530 GOSUB 4420
5540 IF CE = 1 THEN RETURN
5550 GOSUB 4460: RETURN
5560 FL = O: REM EAST LEADS
5570 W = 3: GOSUB 5770
5580 IF CE = 1 THEN GOSUB 350: GOTO 5660
5590 GOSUB 4020
5600 IF CW = 1 THEN CW = 0:HC = 0:RE = RW: GOSUB 4420
5610 IF CE = 1 THEN GOSUB 350: GOTO 5660
5620 IF FL = O THEN FL = 1: GOSUB 5960: GOTO 5600
5630 GOSUB 4460
5640 IF CE = 1 THEN GOSUB 350: GOTO 5660
5650 RE = T: GOSUB 4420: GOSUB 350
5660 PT = RE:TP = 1: GOSUB 4900: GOSUB 1830: GOSUB 460
5670 GOSUB 4970
5680 IF HC = 1 AND W = 3 THEN GOSUB 6040: GOSUB 340: GOTO 5720
5690 IF W = 3 THEN GOSUB 6100: GOSUB 340: GOTO 5720
5700 IF RS = RE THEN RW = RS:RN = RW: GOSUB 1210: GOSUB 340: GOTO 5720
5710 GOSUB 6210: GOSUB 340
5720 TP = 0: GOSUB 4870: GOSUB 1830: GOSUB 360
5730 IF HC = 1 AND RN < >T THEN RETURN
5740 IF W = 1 THEN GOSUB 5030: RETURN
5750 IF W = 3 THEN GOSUB 5090: RETURN
5760 GOSUB 5060: RETURN
5770 FOR QE = 13 TO 1 STEP -1
5780 FOR RE = 4 TO 1 STEP -1
5790 IF E(QE,RE) >O THEN GOSUB 5840
5800 IF CE = 1 THEN RETURN
5810 NEXT
5820 NEXT
5830 RETURN
5840 FOR QN = QE TO 13
5850 IF N(QN,RE) >O OR S(QN,RE) >O THEN RETURN
5860 NEXT
5870 CE = 1:HC = 1: RETURN
5880 FOR RE = 1 TO 4
5890 FOR QE = 1 TO 13
5900 CE = CE +E(QE,RE)
5910 NEXT
5920 IF CE = O AND RE < >T THEN CE = 1:HC = 1: RETURN
5930 CE = O
5940 NEXT
5950 RETURN
5960 FOR RW = 1 TO 4
5970 FOR QW = 1 TO 13
5980 CW = CW +W(QW,RW)
5990 NEXT
6000 IF CW = O AND RW < >T THEN CW = 1:HC = 1: RETURN
6010 CW = O
6020 NEXT
6030 RETURN
6040 RW = RE: GOSUB 4190
6050 IF CW = 1 AND QW >QE THEN W = 1: RETURN
6060 IF CW = 1 THEN RETURN
6070 GOSUB 4130
6080 IF CW = 1 THEN RETURN
6090 W = 1:RW = T: GOSUB 4190: RETURN
6100 RW = RE: GOSUB 6130
6110 IF CW = 1 AND QW >QE THEN W = 1
6120 GOSUB 5410: RETURN
6130 FOR QW = 13 TO 1 STEP -1
6140 IF W(QW,RW) >O THEN CW = 1: RETURN
6150 NEXT
6160 RETURN
6170 FOR QW = 13 TO 1 STEP -1
6180 IF W(QW,RW) >S(QS,RS) THEN CW = 1: RETURN
6190 NEXT
6200 RETURN
6210 RW = RE: GOSUB 4190
6220 IF CW = 1 THEN RETURN
6230 RW = T: GOSUB 5350
6240 IF CW = 1 THEN W = 1: RETURN
6250 GOSUB 4130
6260 IF CW = 1 THEN RETURN
6270 RW = T: GOSUB 4190: RETURN
6280 X = 130:Y = 105: GOSUB 1110: REM SO LEADS
6290 IF AX$ = "A" THEN GOSUB 7040: RETURN
6300 W = 4:TP = 1:X7 = 0: GOSUB 4900: GOSUB 1830: GOSUB 460:PT = RS
6310 RW = RS: GOSUB 1210
6320 IF RW = RS AND QW = 12 AND N(13,RS) >O AND RND(1) <.5 THEN GOSUB 170
6330 GOSUB 340
6340 TP = 0: GOSUB 4870: GOSUB 1830: GOSUB 360
6350 IF W = 4 THEN GOSUB 5060: GOTO 6370
6360 GOSUB 5030
6370 IF W = 4 THEN RE = RS: GOSUB 6710: GOSUB 350: RETURN
6380 IF W = 2 AND RN < >T THEN RE = RN: GOSUB 4690: GOSUB 350: RETURN
6390 IF W = 2 AND RS = RN AND RS = T THEN GOSUB 5510: GOSUB 350: RETURN
6400 IF W = 2 THEN GOSUB 6430: GOSUB 350: RETURN
6410 IF RW = RS THEN GOSUB 4520: GOSUB 350: RETURN
6420 GOSUB 6500: GOSUB 350: RETURN
6430 RE = RS: GOSUB 4420
6440 IF CE = 1 THEN RETURN
6450 RE = T: GOSUB 4830
6460 IF CE = 1 THEN W = 3: RETURN
6470 GOSUB 4460
6480 IF CE = 1 THEN RETURN
6490 RE = T: GOSUB 4420: RETURN
6500 RE = RS: GOSUB 4420
6510 IF CE = 1 THEN RETURN
6520 GOSUB 4460
6530 IF CE = 1 THEN RETURN
6540 RE = T: GOSUB 4420
6550 IF QE >QW THEN W = 3
6560 RETURN
6570 RW = RN: GOSUB 4190
6580 IF CW = 1 THEN RETURN
6590 RW = T: GOSUB 5350
6600 IF CW = 1 THEN W = 1: RETURN
6610 GOSUB 4130
6620 IF CW = 1 THEN RETURN
6630 RW = T: GOSUB 4190: RETURN
6640 RW = RN
6650 IF CW = 1 THEN RETURN
6660 GOSUB 4130
6670 IF CW = 1 THEN RETURN
6680 RW = T: GOSUB 4190
6690 IF QW >QE THEN W = 1
6700 RETURN
6710 FOR QE = 1 TO 13
6720 IF E(QE,RE) >S(QS,RS) THEN CE = 1:W = 3: RETURN
6730 NEXT
6740 GOSUB 4420
6750 IF CE = 1 THEN RETURN
6760 RE = T: GOSUB 4420
6770 IF CE = 1 THEN W = 3: RETURN
6780 GOSUB 4460: RETURN
6790 Q = INT(SB +NB) -1
6800 IF Q = 0 THEN Q = 14
6810 R = T:X = 12:Y = 81: GOSUB 1830
6820 HCOLOR= O:O = 1: GOSUB 1920: GOSUB 3490: RETURN
6830 XX = O:Z = O
6840 FOR X = 1 TO 13
6850 IF N(X,Y) >O THEN XX = XX +1
6860 Z = Z +S(X,Y)
6870 NEXT
6880 Z = Z +TN
6890 RETURN
6900 R = O
6910 IF T = O THEN 6950
6920 FOR Q = 1 TO 13
6930 R = R +N(Q,T) +S(Q,T)
6940 NEXT
6950 IF (R <T8 OR R <Z) AND INT(SB) > = ZZ THEN ZZ = INT(SB) +1: IF NP <6 THEN NP = 6
6960 IF R >T8 AND R >Z THEN R5 = 1:TP = T
6970 RETURN
6980 Z5 = O
6990 FOR D8 = 1 TO 13
7000 IF N(D8,R) >O THEN Z5 = Z5 +1
7010 NEXT
7020 IF Z5 <4 THEN D8 = O: RETURN
7030 D8 = 1:TP = R: RETURN
7040 FOR R = 1 TO 4
7050 FOR Q = 1 TO 13
7060 IF S(Q,R) >O THEN S(Q,R) = O:T2 = T2 +1: GOSUB 1150
7070 NEXT
7080 NEXT
7090 HCOLOR= 1
7100 FOR DE = 12 TO 50
7110 HPLOT 0,DE TO 279,DE
7120 HPLOT 0,DE +127 TO 279,DE +127
7130 NEXT
7140 HCOLOR= 3: RETURN
7150 GET AX$: TEXT : HOME : REM SCORE SHEET SECTION
7160 GOSUB 7670
7170 QS = 30:QE = O:QW = O:QN = INT(SB +NB)
7180 IF T = 1 OR T = 2 THEN QS = 20
7190 FLASH
7200 IF (P$ = "P" OR QN <1) AND RS <1 THEN R = O:Q = O:RE = O: PRINT "NO BID - HIT ANY KEY FOR NEW DEAL": GOTO 7250
7210 IF RS > = (QN +T/10) THEN RS = INT(RS): PRINT "EAST/WEST WINS HAND WITH ";RS;" ";EW$:Q = 0:R = 1:RE = 0: GOTO 7250
7220 IF QN < = (T2 -6) THEN Q = 1:R = O:RE = O: PRINT "YOU MADE THE CONTRACT !!!": GOTO 7250
7230 Q = O:R = O:RE = 1: PRINT "YOUR BID WAS UNSUCCESSFUL"
7240 IF QN >ZZ THEN RE = 2: PRINT "EAST/WEST DOUBLED THE BID"
7250 NORMAL : PRINT
7260 FOR Y = 0 TO 2
7270 IF G(0,Y) <100 AND G(1,Y) <100 THEN 7290
7280 NEXT
7290 G(0,Y) = G(0,Y) +QN *QS *Q
7300 IF T = O AND QN >RS AND QN < = (T2 -6) THEN G(0,Y) = G(0,Y) +10
7310 G(1,Y) = G(1,Y) +RS *30 *R *(EW >2) +RS *20 *R *(EW <3)
7320 UB = UB +Q *(T2 -6 -QN) *QS
7330 IF G(0,0) > = 100 OR G(0,1) > = 100 THEN OB = OB +100 *RE *(QN +6 -T2)
7340 IF G(0,0) <100 AND G(0,1) <100 THEN OB = OB +50 *RE *(QN +6 -T2)
7350 FOR Y = 0 TO 2
7360 QE = QE +G(0,Y)
7370 QW = QW +G(1,Y)
7380 NEXT
7390 IF Q = 1 AND QN >5 THEN UB = UB +500
7400 IF R = 1 AND RS >5 THEN OB = OB +500
7410 IF G(0,0) > = 100 AND G(0,1) > = 100 THEN UB = UB +750:ZZ = -1: GOTO 7450
7420 IF G(1,0) > = 100 AND G(1,1) > = 100 THEN OB = OB +750:ZZ = -1: GOTO 7450
7430 IF G(0,2) > = 100 THEN UB = UB +500:ZZ = -1: GOTO 7450
7440 IF G(1,2) > = 100 THEN OB = OB +500:ZZ = -1
7450 QE = QE +UB
7460 QW = QW +OB
7470 GOSUB 7480: GOTO 7590
7480 INVERSE
7490 PRINT " NORTH/SOUTH"; TAB( 20);"EAST/WEST ": NORMAL
7500 PRINT : PRINT TAB( 6);UB; TAB( 23);OB
7510 PRINT "-----------------------------"
7520 FOR Y = 0 TO 2
7530 PRINT TAB( 6);G(0,Y); TAB( 12);"<GAME";(Y +1);">"; TAB( 23);G(1,Y)
7540 PRINT : INVERSE
7550 PRINT " "
7560 NORMAL : PRINT
7570 NEXT
7580 RETURN
7590 PRINT TAB( 6);QE; TAB( 12);
7600 PRINT "<TOTAL>"; TAB( 23);QW: PRINT
7610 INVERSE : PRINT " ": NORMAL
7620 PRINT
7630 IF ZZ = -1 THEN CALL -198: FLASH : PRINT "GAME OVER";: NORMAL : GOSUB 620:UB = O:OB = O
7640 PRINT " PLAY AGAIN ? (Y/N) ";
7650 GET AX$: IF AX$ = "N" THEN END
7660 RETURN
7670 RS = 0
7680 FOR XZ = 1 TO 7
7690 IF (43 -NP -SP) >(16 +3 *XZ) THEN RS = XZ
7700 NEXT
7710 ET = 0:WT = 0
7720 FOR J8 = 1 TO 4
7730 TE = 0:TW = 0
7740 FOR K8 = 1 TO 13
7750 TE = TE +E(K8,J8):TW = TW +W(K8,J8)
7760 NEXT
7770 IF TE > = ET THEN ES = J8:ET = TE
7780 IF TW > = WT THEN WS = J8:WT = TW
7790 NEXT
7800 IF WT >ET THEN EW = WS
7810 IF ET > = WT THEN EW = ES
7820 RS = RS +EW/10
7830 IF EW = 1 THEN EW$ = "CLUBS"
7840 IF EW = 2 THEN EW$ = "DIAMONDS"
7850 IF EW = 3 THEN EW$ = "HEARTS"
7860 IF EW = 4 THEN EW$ = "SPADES"
7870 IF RS <1 THEN EW$ = " "
7880 RETURN